本篇记录存储层的配置过程。黑群晖作为存储节点,飞牛 OS 作为计算节点,两者通过 SMB 打通,实现存算分离。飞牛 OS 从发布就开始关注了,最近也是了解了一下,相比来说影音这块还是比在群辉上部署各种容器要方便很多。安全性方面我使用存算分离的方式应该也不会有什么问题,容错配置满了。
存储架构回顾
1 | PVE(ZFS RAID1,西数 1T NVMe + 铠侠 1T NVMe) |
存算分离的逻辑:数据只存一份在群晖,飞牛的 Docker 容器通过 SMB 直接读写,不重复占空间,群晖统一负责备份和 S.M.A.R.T 监控。
一、VM3:黑群晖
黑群晖使用 RR 引导(Redpill Repack),支持 DSM 7.x,是目前最稳定的方案。
SATA 控制器直通
将整块 SATA 控制器直通给群晖 VM,让 DSM 直接管理物理硬盘,S.M.A.R.T 数据完整,稳定性更好。
在 PVE Shell 中确认 SATA 控制器:
1 | lspci | grep -i sata |
在 PVE Web → VM → 硬件 → 添加 → PCI 设备,勾选该 SATA 控制器和 All Functions,保存。
SATA 控制器直通后,该控制器下的硬盘对 PVE 不再可见,完全由群晖接管。PVE 系统盘是 NVMe,不受影响。
三个盘位规划:
| 盘位 | 硬盘 | 用途 |
|---|---|---|
| SATA 1 | 希捷 1TB 2.5 寸机械 | SHR 存储池(主数据) |
| SATA 2 | 希捷 1TB 2.5 寸机械 | SHR 存储池(主数据) |
| SATA 3 | 西数 1TB 3.5 寸机械 | 备份盘(SMB 共享) |
创建虚拟机
| 项目 | 配置 |
|---|---|
| CPU | 4 核,类型 host |
| 内存 | 12 GB |
| 系统盘 | 32 GB 虚拟盘,总线 SATA(DSM 系统) |
| 网卡1 | 桥接 vmbr0,VirtIO(备用管理 124.11) |
| 网卡2 | 桥接 vmbr2,VirtIO(日常内网 11.11,2.5G) |
| PCI 设备 | SATA 控制器直通 |
| vGPU | Intel UHD 630 GVT-g 虚拟显卡(mediated device) |
准备虚拟盘(在 PVE Shell 中执行)
1 | # 群晖 SSD 缓存盘 × 2(替换 <VMID> 为群晖 VM ID) |
sata0 是群晖 DSM 系统盘,sata1/sata2 是 SSD 缓存盘,sata3 是 250GB 高速盘。物理 SATA 控制器是 PCI 直通,和这些 PVE 模拟的虚拟 SATA 盘走不同的控制器,DSM 里能分别看到,互不干扰。
导入 RR 引导
从 RR Releases 下载最新 .img.gz,解压后在 PVE Shell 导入:
1 | gunzip rr.img.gz |
在 VM 硬件页面将导入的磁盘挂载为 scsi0,并在选项 → 引导顺序中设为第一启动项。
配置引导 & 安装 DSM
- 启动 VM,访问 RR 引导页面(
http://192.168.124.11:7681) - 选择机型 DS920+
- 选择 DSM 版本,点击构建引导,完成后重启
- 重启后访问
http://192.168.124.11:5000,按向导完成 DSM 安装
每次重建 VM 建议在网络设置中固定两张虚拟网卡的 MAC 地址,避免 DSM 重新激活。
核显直通(UHD 630 GVT-g)
i5-9500 的核显 UHD 630 支持 Intel GVT-g,可以虚拟出多个 vGPU 分配给不同 VM,宿主机同时保留核显使用权。把一个 vGPU 给群晖,Synology Photos 就能用 Quick Sync 加速照片编解码和人脸识别。
第一步:PVE 宿主机启用 GVT-g
编辑 /etc/default/grub,追加 i915.enable_gvt=1:
1 | GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_gvt=1" |
编辑 /etc/modules,追加:
1 | kvmgt |
1 | update-grub |
重启后验证:
1 | ls /sys/bus/pci/devices/0000:00:02.0/mdev_supported_types/ |
第二步:创建 vGPU 实例并持久化
生成固定 UUID 并创建 systemd 服务,确保每次开机自动创建 mediated device:
1 | UUID=$(uuidgen) |
创建 /etc/systemd/system/gvt-g-group.service:
1 | [Unit] |
1 | systemctl enable --now gvt-g-group.service |
i915-GVTg_V5_4对应 128MB 显存,群晖照片用够了。GVT-g 是 Coffee Lake(8/9 代)特有功能,i5-9500 正好是支持的最后几代之一。
第三步:将 vGPU 挂给群晖 VM
在 PVE Web → 群晖 VM → 硬件 → 添加 → PCI 设备,切换到 Mediated Devices 标签,选择创建的 UUID 实例。
或直接编辑 /etc/pve/qemu-server/<VMID>.conf,追加:
1 | hostpci1: 0000:00:02.0,mdev=<UUID> |
第四步:DSM 中确认并启用硬件加速
1 | # SSH 进入群晖,验证核显识别 |
套件中心 → Synology Photos → 设置 → 硬件加速 → 启用。开启后照片索引、缩略图生成、人脸识别速度明显提升。
存储池配置(SHR)
DSM 安装完成后进入存储管理员:
- 选择两块希捷 1T 2.5 寸机械,RAID 类型选 SHR(Synology Hybrid RAID)
- SHR 在容量相同时等同于 RAID1,任意一块损坏数据不丢失,可用空间约 1T
- 创建完成后在存储池上新建共享文件夹
media、photo
西数 1TB 3.5 寸机械盘单独作为备份盘,创建新的存储池。在 DSM 中将其格式化后创建共享文件夹 backup,开启 SMB 共享,群晖自己和飞牛都可以把备份写到这块盘上。
群晖侧通过 Hyper Backup 定期将 SHR 存储池数据备份到 backup 目录。
SSD 读写缓存
SHR 是机械硬盘,随机读写是短板。DS920+ 支持 SSD 缓存,前面已经从 ZFS 划了两块 30GB 虚拟盘,现在在 DSM 里激活:
进入 DSM 存储管理员 → SSD 缓存 → 新增:
- 选择挂入的两块虚拟 SSD(sata1、sata2)
- 模式选择读写缓存(两块盘内部做 RAID1,保证缓存安全)
- 将缓存绑定到 SHR 存储池
- 创建完成后热点数据逐步预热,缓存命中后体感接近固态速度
高速虚拟盘(250GB NVMe 共享盘)
从 ZFS 划出的 250GB 虚拟盘挂给群晖后,在 DSM 里格式化成独立卷:
进入 DSM 存储管理员 → 存储池 → 新增:
- RAID 类型选 Basic(单盘,底层 ZFS RAID1 已做容错,DSM 层面不需要再做 RAID)
- 选择 250GB 虚拟盘(sata3)
- 文件系统选 Btrfs(支持快照)
在新建的 250GB 卷上创建共享文件夹 fast,开启 SMB 共享。
SMB 共享规划
DSM 控制面板 → 文件服务 → SMB → 启用 SMB 服务后,三个共享对局域网可见:
| 共享名 | 存储 | 适合放什么 |
|---|---|---|
media / photo |
希捷 2.5 寸机械 SHR(~1T) | 照片、视频、主力数据 |
fast |
NVMe 虚拟盘(250G) | Docker 数据、数据库、热数据 |
backup |
西数 3.5 寸机械(1T) | 群晖和飞牛的定期备份 |
二、VM4:飞牛 OS
飞牛 OS(fnOS)内置 Docker,作为计算节点跑媒体服务和下载工具,数据通过 SMB 挂载群晖存储。
创建虚拟机
| 项目 | 配置 |
|---|---|
| CPU | 4 核,类型 host |
| 内存 | 12 GB |
| 系统盘 | 200 GB 虚拟盘(来自 ZFS),总线 SATA |
| 网卡1 | 桥接 vmbr0,VirtIO(备用管理 124.14) |
| 网卡2 | 桥接 vmbr2,VirtIO(日常内网 11.14,2.5G) |
| PCI 设备 | AMD RX550 半高显卡直通 |
准备 200GB 虚拟盘
1 | # 创建 200GB 虚拟盘(替换 <VMID> 为飞牛 VM ID) |
飞牛安装后系统约占用 64GB,剩余约 136GB 在飞牛 OS 存储管理中作为内部高速存储,底层是 ZFS RAID1,任意一块 NVMe 损坏不影响飞牛运行。
显卡直通(RX550)
RX550 直通给飞牛 OS,飞牛影视和飞牛相册等媒体服务用 GPU 做硬件加速,CPU 占用大幅降低。
开启 IOMMU(和 GVT-g 同时在 grub 配置,已在群晖章节说明):
1 | GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_gvt=1" |
确认 RX550 的 IOMMU 分组:
1 | lspci | grep -i vga |
RX550 独立显卡通常单独成一个 IOMMU 组,直通比较顺利。
PVE 中添加 PCI 设备:
飞牛 OS VM → 硬件 → 添加 → PCI 设备,选择 RX550,勾选 All Functions,保存。
直通后 RX550 对 PVE 宿主机不再可见。800 G5 SFF 有核显(UHD 630),PVE 管理界面走核显输出,不受影响。
飞牛 OS 中验证和配置:
1 | ls /dev/dri/ |
安装
- 从 飞牛官网 下载 ISO,上传到 PVE ISO 镜像库
- 挂载 ISO 启动,按向导选择 200GB 虚拟盘作为系统盘完成安装
- 安装完成后访问
http://192.168.124.14:5666 - 进入网络设置,将两张网卡分别固定为
192.168.124.14和192.168.11.14 - 进入存储管理,剩余的 136GB 空间单独创建一个卷,作为内部高速存储
挂载群晖共享目录(SMB)
飞牛和群晖都在 vmbr2 的 2.5G 内网里,SMB 传输走 11 网段。
飞牛 OS 的「存储」→「网络存储」→「添加 SMB/CIFS」,依次添加三个挂载:
| 挂载点 | 服务器地址 | 共享名 | 用途 |
|---|---|---|---|
/mnt/nas-hdd |
192.168.11.11 |
media |
群晖机械 SHR,主力媒体库 |
/mnt/nas-fast |
192.168.11.11 |
fast |
群晖 NVMe 虚拟盘,热数据 |
/mnt/nas-backup |
192.168.11.11 |
backup |
西数 3.5 寸机械,备份目标 |
挂载完成后,所有 Docker 容器都可以通过这三个路径访问群晖存储。
飞牛 OS 定期备份到冷备盘:
在飞牛 OS 「备份」功能中新建任务,源路径选飞牛内部存储,目标路径选 /mnt/nas-backup,设置定期执行时间。和群晖的 Hyper Backup 一起,两台 VM 的数据都备份到西数 3.5 寸机械盘。
踩坑记录
1、黑群晖 RR 引导构建失败
RR 需要联网下载 DSM 固件。如果卡住,可以提前手动下载对应版本的 PAT 文件放到引导目录,RR 会自动识别本地文件。
2、DSM 重新激活弹窗
每次重建群晖 VM 如果虚拟网卡 MAC 地址变了,DSM 会提示重新激活。在 PVE 的 VM 网络设备设置中固定 MAC 地址即可避免。
3、GVT-g 服务起来了但群晖 VM 起不来
检查 /etc/pve/qemu-server/<VMID>.conf 中的 hostpci1 行,UUID 是否和 systemd 服务中创建的一致。可以用 ls /sys/bus/pci/devices/0000:00:02.0/ 确认 mdev 目录是否存在。
4、飞牛 OS SMB 挂载后 Docker 容器没权限写入
SMB 挂载时指定 uid 和 gid 参数,与飞牛 OS 中运行 Docker 的用户 ID 一致。或者在共享文件夹权限中给对应账号写权限。